<?php

/**
 * @file combobox.php
 * @brief Clase para generar un combobox
 * @author DyrTechnologies
 * @version V 1.0
 * @date Wed Oct 03 2007
 *
 *  Part of the CEFIRO dynamic web framework project
 *
 *  Copyright (C) 2007  Dyr technologies http://dyrtech.com.ve
 *
 *  This program is free software: you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation, either version 3 of the License, or
 *  (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

/**
 * @class Clase checkbox
 */

require_once(CEF_SIMPLECOMBO);

/**
 * @brief Define la ruta a la hoja de estilos para el combobox
 *
 */

define("COMBOBOX_CSS",FULL_URL."combobox/combobox.css");

$combobox_instance = 0;

class combobox extends simplecombo {

	private $label;
	private $domain;

	/**
	 * @brief Constructor por omision y parametrico de la clase aprovechamos el hecho de que cada atributo tiene un valor por omision predefinido para no rehacer el constructor
	 *
	 * @param string $_label
	 * @param string $_name
	 * @param Array $_table
	 * @param string $_value
	 * @param string $_option
	 * @param string $_selection
	 * @param input_opt $_opt
	 * @return combobox La instancia de la clase
	 */

	public function combobox($_name = '__combobox', $_label='', $_table = '', $_value = 'value', $_option = 'option', $_selection = '-Select an Item-', $_domain = '', $_selected = -1, $_opt = ''){

		/**
		 * @brief $combobox_instance es una variable para incrementar el numero de comboboxes existentes
		 */
		global $combobox_instance;
		$combobox_instance++;

		/**
		 * @brief El nombre del widget es el tipo con el numero de la instancia que representa o el nombre pasado por omision en caso contrario
		 */

		if($_name!="__combobox")
		$this->set_name($_name);
		else
		$this->set_name("combobox".$combobox_instance);


		/**
		 * @brief Se asignan los valores a los atributos de la clase combobox segun vengan dados al llamar al constructor de la misma
		 * @brief notar que existen valores por omision para cada atributo
		 */
		$this->label=$_label;
		$this->set_table($_table);
		$this->set_value($_value);
		$this->set_option($_option);
		$this->set_selected($_selected);
		$this->set_selection($_selection);
		$this->set_opt($_opt);
		$this->set_domain($_domain);
	}

	/**
	 * @brief Las funciones get_VAR devuelven las variables que tenga ajustadas la instancia: Etiqueta (label)
	 *
	 * @return string Valor de VAR
	 */

	public function get_label(){
		return $this->label;
	}

	/**
	 * @brief Las funciones set_VAR ajustan las variables de la instancia: Etiqueta (label)
	 */

	public function set_label($_label){
		$this->label=$_label;
	}

	/**
	 * @brief Ajusta los valores de smarty de acuerdo a lo especificado por los atributos de la instancia combobox
	 */
	private function smarty_combobox($scombo='',$dfield=''){

		global $smarty;

		/**
		 * @brief Asignacion atributo por atributo a lo deseado en las variables de smarty
		 */
		$smarty->assign("table",$this->get_table());
		$smarty->assign("label",$this->get_label());

		$smarty->assign("simplecombo",$scombo);

		$smarty->assign("domain",$this->get_domains());
		$smarty->assign("domain_field",$dfield);

		/**
		 * @brief Asigna la hoja de estilo que contiene los rasgos del combobox a una variable
		 */
		$smarty->assign("comboboxcss",COMBOBOX_CSS);
	}

	/**
	 * @brief Asigna el combobx a la variable $smarty para su renderizacion
	 *
	 */
	public function display_combobox($fetch = false){
		global $smarty;

		/**
		 * @brief Se renderiza primero las sub-instancias para evitar conflictos en el directorio de plantillas smarty
		 */
		$scombo = $this->display_simplecombo(true,false);
		$dfield = $this->display_domain($this->get_name(),true);

		/**
		 * @brief Ajustamos el directorio de plantillas la plantilla de la clase
		 */
		$smarty->template_dir = dirname(__FILE__).'/';
		$this->smarty_combobox($scombo,$dfield);
		if(!$fetch)
			$smarty->assign( $this->name , $smarty->fetch('combobox.tpl') );
		else 
			return $smarty->fetch('combobox.tpl');
	}
}

  ?>